package com.cgrs572.shortlink.project.common.convention.result;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;

/**
 * 全局返回对象
 */
@Data
@Accessors(chain = true) // 使生成的setter方法返回当前类的对象，从而支持方法链式调用
public class Result<T> implements Serializable {

    // 在实现 Serializable 接口的类中，通常需要定义一个 serialVersionUID 字段来标识类的版本。
    // @Serial 可以标记这个字段，确保其类型和修饰符正确，必须为static final long
    @Serial
    private static final long serialVersionUID = 5679018624309023727L;

    /**
     * 正确返回码
     */
    public static final String SUCCESS_CODE = "0";

    /**
     * 返回码
     */
    private String code;

    /**
     * 返回消息
     */
    private String message;

    /**
     * 响应数据
     */
    private T data;

    /**
     * 请求ID
     */
    private String requestId;

    public boolean isSuccess() {
        return SUCCESS_CODE.equals(code);
    }
}
